package br.org.acessobrasil.portal.util;

import java.io.FileWriter;
import java.io.IOException;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.dialect.HSQLDialect;

import br.org.acessobrasil.portal.modelo.Arquivo;
import br.org.acessobrasil.portal.modelo.ArquivoLog;
import br.org.acessobrasil.portal.modelo.BuscaPortal;
import br.org.acessobrasil.portal.modelo.Conteudo;
import br.org.acessobrasil.portal.modelo.ConteudoFormatado;
import br.org.acessobrasil.portal.modelo.Formato;
import br.org.acessobrasil.portal.modelo.InformacaoTipoConteudo;
import br.org.acessobrasil.portal.modelo.ItemConteudo;
import br.org.acessobrasil.portal.modelo.ItemMenu;
import br.org.acessobrasil.portal.modelo.Menu;
import br.org.acessobrasil.portal.modelo.PadraoApresentacao;
import br.org.acessobrasil.portal.modelo.Pagina;
import br.org.acessobrasil.portal.modelo.Perfil;
import br.org.acessobrasil.portal.modelo.PerfilAcao;
import br.org.acessobrasil.portal.modelo.Setor;
import br.org.acessobrasil.portal.modelo.Sitio;
import br.org.acessobrasil.portal.modelo.TipoConteudo;
import br.org.acessobrasil.portal.modelo.Usuario;

public class CriaBanco {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		try {
			AnnotationConfiguration cfg = new AnnotationConfiguration();
			cfg.addAnnotatedClass(Arquivo.class);
			cfg.addAnnotatedClass(ArquivoLog.class);
			cfg.addAnnotatedClass(BuscaPortal.class);
			cfg.addAnnotatedClass(Conteudo.class);
			cfg.addAnnotatedClass(ConteudoFormatado.class);
			//ErrosRegra nao precisa
			cfg.addAnnotatedClass(Formato.class);
			cfg.addAnnotatedClass(InformacaoTipoConteudo.class);
			//ItemBusca nao precisa
			cfg.addAnnotatedClass(ItemConteudo.class);
			cfg.addAnnotatedClass(ItemMenu.class);
			cfg.addAnnotatedClass(Menu.class);
			cfg.addAnnotatedClass(PadraoApresentacao.class);
			cfg.addAnnotatedClass(Pagina.class);
			cfg.addAnnotatedClass(Perfil.class);
			cfg.addAnnotatedClass(PerfilAcao.class);
			//RelatorioAcessibilidade n�o precisa
			cfg.addAnnotatedClass(Setor.class);
			cfg.addAnnotatedClass(Sitio.class);
			cfg.addAnnotatedClass(TipoConteudo.class);
			cfg.addAnnotatedClass(Usuario.class);			
			String[] scripts = cfg.generateSchemaCreationScript(new HSQLDialect());
			writeFile("or_ddl_hsqldb.sql", scripts);
			System.out.println("Script de cria&ccedil;&atilde;o do banco feito");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static void writeFile(String fileName, String[] scripts) throws IOException {

		FileWriter writer = new FileWriter(fileName);
		for (int i = 0; i < scripts.length; i++) {
			writer.write(scripts[i] + "\n\n");
		}
		writer.flush();
		writer.close();
	}

}
